/*
 * 版权声明 (c) 2025 XXX科技有限公司
 *
 * 本软件及其相关文档文件受版权保护。未经版权所有者明确书面许可，任何单位或个人不得
 * 以任何形式复制、传播、修改、出售、出租、反向工程、反编译或利用本软件的任何部分。
 *
 * 对于任何违反本声明的行为，版权所有者保留追究法律责任的权利。
 */

#ifndef SYNC_MODULE_H
#define SYNC_MODULE_H

#include <memory>
#include <thread>
#include "module.h"

#include <atomic>

class SyncModule final : public Module {
public:
	int IntervalSec = 1; // 同步间隔(秒)

	explicit SyncModule(Context &context, const string &module_name);
	~SyncModule() override;

	bool Init() override;

	// 非系统服务，无需重写
	// void Start() override;
	// void Stop() override;

	// 同步处理函数(由AgentModule触发)
	void OnProcess(int intervalSec = 5);

private:
	int sockfd{};

	// 同步任务服务运行状态
	atomic<bool> running{false};

	// 同步线程处理函数
	void sync_process_handler(int intervalSec) const;

	// 同步线程
	unique_ptr<thread> thread_sync;
};

#endif
